急いで学ぶGo lang#1  概要とセットアップ

急いで学ぶGo lang#1 概要とセットアップ

Clock Icon2015.02.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Go言語を始める

諸事情によりGoを使ってみることになりました。 弊社では一部の人たちに人気かもしれないGo。 私は名前を知ってる程度の知識だったのですが、いい機会なので学んだ内容をまとめていきます。

動作環境

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.9.4
  • GO : 1.4.1

Goとは

GoはGoogleによって開発されているオープンソースのプログラミング言語で、 現状Linux/Mac/Windows/Androidで動作します。 また、最近はGoogle App EngineでもGoを使って実装できるようになったみたいです。 主な特徴は以下のとおり。

  • シンプルな言語である
  • コンパイル・実行速度が早い
  • 同期処理が容易に行える
  • ポインタはあるけどポインタ演算はできない
  • 過去にあるいろいろな言語の特徴を持つ
  • 型継承・ジェネリクス・オーバーロードといった機能がない
  • インターフェイスによる多態性を実現
  • Cのライブラリから関数よんだりできる

ちなみに、近々AWS SDK for Goがリリースされる予定らしいです。

Goのセットアップ

インストール

まずはGoのセットアップをします。今回はMacでのお話です。 まずはここから環境にあったpkgをダウンロードしてインストールするか、 Homebrewでインストールできます。自分は楽なのでbrew使いました。

% brew install go
% go version                                                                                   
go version go1.4.1 darwin/amd64

環境変数の設定

Goには設定すべき環境変数が2つあるみたいです。 ただ、こことか見るといらないとか書いてます。 どうやら必須ではないけど、設定しておいたほうが何かと良いらしいです。

設定推奨の環境変数の1つが「GOROOT」。これはGoのツールがあるディレクトリへの参照だそうです。 ようするにJAVA_HOMEみたいなものですかね。 HombebrewでGoをインストールした場合、 /usr/local/opt/go/libexec/ になるようです。(実体は/usr/local/Cellar/go/<バージョン>/libexec/) goディレクトリ自体じゃないので注意。

設定推奨の環境変数その2は「GOPATH」。 これはワークスペースのパスを設定するめたの変数で、Goプロジェクト自体を指定しておけばいいらしいです。 GOPATHはプログラム中のimport文の解決に使われるみたいです。 Goではgo getというコマンドで外部パッケージを読み込むことができるんですが、これを実行すると GOPATHの先頭のディレクトリにダウンロードされます。 なお、GOPATH以下は下記のように決められた構造を持っている必要があります。 GOPATHの下にはsrc(ソース)/bin(バイナリ)/pkg(外部パッケージ)ディレクトリがあること。

$GOPATH=/path/rour/gopath

/path/rour/gopath
|
|ーsrc
|ーbin
|ーpkg

あとはbash_rcなりzsh_rcなりにexport文をいれておきましょう。

export GOROOT=/usr/local/opt/go/libexec
export GOPATH=$HOME/<your go project workspace>

サンプルを動かしましょう

適当な場所に(とりあえず$GOPATH以下にでも)main.goファイルを作成し、 下記内容を記述します。なんとなく何してるかはわかりますね。

package main

import "fmt"

func main() {
    fmt.Println("hello world")
}

main.goができたら、プログラムを実行します。実行はgo runコマンド。

% go run main.go                                                                               
hello world

とりあえずGoが動く環境はできました。

参考サイトなど

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.